// static/js/curl_input.js


// 导入 :
import { showAlertNew } from '../js/common.js';


// 复制用例格式 : ( 因为用例代码是写死在该 js 方法中的, 所以定义一个独立的复制方法 )
function copyTestCodeToClipboard() {

    const code = `
    #
    @pytest.mark.parametrize('case_data', all_data.get('', ''))
    def test_(self, case_data: ExcelData, token_admin):
        # 处理数据 :
        case_data.data['xxx'] = do_conf.get('xxx')

        # 调用接口并断言 :
        PCApi(token_admin).call_assert(case_data)
        pass`;

    if (navigator.clipboard) {
        // 现代浏览器支持剪贴板 API
        navigator.clipboard.writeText(code)
            .then(() => {
                showAlertNew('用例格式已复制到剪贴板');
            })
            .catch((err) => {
                showAlertNew('复制失败: ' + err.message);
            });
    } else {
        // 退回到旧版的复制方法
        fallbackCopyTextToClipboard(code, '用例格式');
    }
}


// 验证码显示 :
export function showVerifyCode(datas, venv = 'test') {
  // h2 修改 :
  const venv_h2 = document.getElementById('verifycode-venv');
  if (venv === 'test') {
    venv_h2.textContent = 'Test 环境最新验证码';
  } else {
    venv_h2.textContent = 'Pre 环境最新验证码';
  }

  // 验证码展示 :
  const dataBody = document.getElementById('verify-data-body');
  // 先清空 :
  dataBody.innerHTML = '';
  // 再追加 :
  datas.forEach(item => {
    const row = `
      <tr>
        <td>${item.phone}</td>
        <td>${item.verify_code}</td>
        <td>${item.create_time}</td>
      </tr>
    `;
    dataBody.insertAdjacentHTML('beforeend', row);
  });

  const verifyCode = document.getElementById('verifyCodeTable');
  verifyCode.style.display = 'block';

  // 初始化倒计时
  initCountdown(verifyCode);

  // 为关闭按钮绑定事件, 隐藏验证码弹框 :
  const closeButton = document.getElementById('closeVerifyCodeTable');

  // 定义关闭按钮的处理函数，并添加事件监听器
  function closeHandler() {
    hideVerifyCode();
  }

  // 移除已有的点击事件监听器，防止重复绑定
  closeButton.removeEventListener('click', closeHandler);
  closeButton.addEventListener('click', closeHandler);
}

function initCountdown(verifyCode) {
  // 获取倒计时显示元素
  const countdownElement = document.getElementById('countdown');

  // 清除任何现存的定时器或间隔
  clearInterval(window.intervalId);
  clearTimeout(window.timeoutId);

  // 重置倒计时
  let remainingTime = 4;

  // 更新倒计时显示
  function updateCountdown() {
    remainingTime--;
    if (remainingTime <= 0) {
      clearInterval(window.intervalId);
      hideVerifyCode();
    }
    countdownElement.textContent = `自动关闭倒计时 : ${remainingTime}`;
  }

  // 开始倒计时
  window.intervalId = setInterval(updateCountdown, 1000);

  // 设置初始倒计时显示
  countdownElement.textContent = `自动关闭倒计时 : ${remainingTime}`;

  // 自动关闭功能
  window.timeoutId = setTimeout(hideVerifyCode, 5000);
}

function hideVerifyCode() {
  const verifyCode = document.getElementById('verifyCodeTable');
  verifyCode.style.display = 'none';

  // 清除定时器和间隔定时器，以防它们触发隐藏操作
  clearInterval(window.intervalId);
  clearTimeout(window.timeoutId);
}


// 绑定到 window 对象 :
window.copyTestCodeToClipboard = copyTestCodeToClipboard;  // 复制
window.showVerifyCode = showVerifyCode;  // 显示弹框
